#pragma once
#include "Assignable.h"
#include "vm.h"

#include <string>

class Var :
    public Assignable
{
public:
    Var(vm *_env, Token *_tok);
    virtual ~Var(void);

    virtual int DoEvalInt();
    virtual std::string Name();

    virtual float DoEvalFlt();

    virtual void SetValue(int val);
    virtual void SetValue(float val);
    virtual void SetMaxValue(int val);
    virtual void SetMaxValue(float val);
    virtual void SetStep(int step);
    virtual void SetStep(float step);
    virtual int MaxValue();
    virtual float MaxFltValue();
    virtual int Step();
    virtual float FltStep();

private:
    vm *env;
};

